home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 45
/
Amiga Format CD45 (1999-09)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-11].iso
/
+system+
/
afcd_install
next >
Wrap
Text File
|
1999-08-09
|
12KB
|
478 lines
; $VER: AFCD_Install 1.1 (6.8.99)
; by Oliver Roberts (oliver.roberts@iname.com)
;*************
; LOCALE INIT
;*************
(if (= (exists "Env:Language") 1)
(set @language (getenv "Language"))
)
;*****************
; ENGLISH STRINGS
;*****************
(set #str-yes "Yes")
(set #str-no "No")
(set #str-askfind "Copy AFCDFind to your hard drive?")
(set #str-findno "No - I'd rather use it from the CD")
(set #str-findprog "Yes - Just the program itself")
(set #str-findall "Yes - The program and all the indices")
(set #str-finddest "Select where the AFCDFind program files should be installed (no drawer will be created!)")
(set #str-askaminet "Copy the Aminet index listing to your hard drive?\n(requires approx 5Mb disk space)")
(set #str-copyaminetindex "Copying Aminet index file")
(set #str-settooltypes "Setting tooltypes")
(set #str-updating "Updating %s")
(set #str-updateinstaller "Checking to see whether Installer should be updated")
(set #str-updateview "Checking to see whether AFCDView needs to be copied to C: (i.e. if it's not there already or you have an old version")
(set #str-notoncd "Set the NOTONCD tooltype?\n(see help for info)")
(set #str-indexdir "Select where the AFCD index files should be installed")
(set #str-dopus (cat
"If you wish to use the features in AFCDFind that utilise Directory "
"Opus, you will need to install the support script for these "
"features to work. Install the script?"
))
(set #str-dopusdest "Select where the script should be installed")
(set #str-aminetdest "Select where the Aminet index file should be installed")
(set #str-complete (cat
"Installation of your chosen files has now been completed\n\n"
"The choices that you have made will be saved and will be used "
"as the defaults when you next run this installer"
))
(set #str-installmode (cat
"Do you wish to view/change your existing settings or just update "
"the files using your current settings?"
))
(set #str-modenew "Change these settings")
(set #str-modeview "View settings")
(set #str-modeupdate "Update files")
(set #help-updateinstaller (cat
"This installer script will automatically update your copy of Installer "
"if you are using an older version"
))
(set #help-updateview (cat
"This installer script will automatically update your copy of AFCDView "
"which is required to view files on this CD via the AFCDPrefs system"
))
(set #help-find (cat
"Although AFCDFind works just fine from the CD, you may wish to "
"install it on your hard drive. If so, then there are two different "
"variations to choose from:\n\n"
"1. Just the AFCDFind program files will be copied to your hard "
"drive. You could then create a \"left out\" icon via Workbench "
"so you can easily access AFCDFind from Workbench. However, for "
"this to work, you'll still need an AFCD in your drive.\n\n"
"2. In addition to copying all the AFCDFind program files to your "
"hard drive, you can choose to copy all the CD index files too. "
"This may be faster, and it also means that you can use AFCDFind "
"even if there is no AFCD in your CD drive. However, you'll need "
"to have quite a bit of spare space to use this option (30Mb+ at "
"the time of writing!\n\n"
))
(set #help-notoncd (cat
"Currently, setting this tooltype just changes the text in the Search "
"cycle gadget. Normally, there will be \"This CD\" and \"Last 5 CDs\" options. "
"If you specify this tooltype, these will be replaced with the actual CD "
"numbers. You may prefer this when running AFCDFind off your hard drive "
"instead of the CD.\n\n"
))
;************
; PROCEDURES
;************
(procedure P_SaveChoices
(textfile
(dest "ENV:AFCD_Install")
(append
(cat
("FINDINSTALL=%ld\n" #findinstall)
("FINDDIR=%s\n" #finddir)
("AMINETINSTALL=%ld\n" #aminetinstall)
("AMINETDIR=%s\n" #aminetdir)
("FINDDOPUS=%ld\n" #find-dopus)
)
)
(safe)
)
(copyfiles
(source "ENV:AFCD_Install")
(dest "ENVARC:")
(nogauge)
(safe)
)
)
(procedure P_ReadFindTooltypes
(set #indexdir (tackon #finddir "AFCD_Indices"))
(set #matchscript (tackon #finddir "AFCDFind-HandleMatch.dopus5"))
(if (AND (exists (tackon #finddir "AFCDFind.info")) (>= @installer-version 2752524))
(
(set #find-notoncd "off")
(iconinfo
(dest (tackon #finddir "AFCDFind"))
(gettooltype "NOTONCD" "#find-notoncd")
(gettooltype "INDEXDIR" "#indexdir")
(gettooltype "MATCHSCRIPT" "#matchscript")
(safe)
)
)
)
(set #find-notoncd (<> "off" #find-notoncd))
(if (= #indexdir (cat #cddevice ":+System+/Indices"))
(set #indexdir (tackon #finddir "AFCD_Indices"))
)
)
(procedure P_GetViewSettingsString
(cat
("Install AFCDFind? %s\n" (select #findinstall #str-findno #str-findprog #str-findall))
("Destination: %s\n" #finddir)
("Index dir: %s\n" #indexdir)
("NOTONCD tooltype: %s\n" (if #find-notoncd "Set" "Unset"))
("DOpus support: %s\n\n" (if #find-dopus #matchscript "Off"))
("Install Aminet Index? %s\n" (if #aminetinstall #str-yes #str-no))
("Destination: %s" #aminetdir)
)
)
;******
; INIT
;******
(if (= "AFCD" (substr (expandpath ":") 0 4))
; started from an AFCD
(set #cddevice (getdevice ":"))
; not started from an AFCD (for testing purposes)
(set #cddevice "CD0")
)
(set #finddir @default-dest)
(set #aminetdir @default-dest)
(set #findinstall 0)
(set #aminetinstall 0)
(set #find-notoncd 1)
(set #find-dopus 1)
(set #config (getenv "AFCD_Install"))
(set #configsize (strlen #config))
(if (> #configsize 0)
(
(set #i 0)
(until (>= #i #configsize)
(
(set #k #i)
(while (<> (substr #config #i 1) "=")
(set #i (+ #i 1))
)
(set #var (substr #config #k (- #i #k)))
(set #i (+ #i 1))
(set #k #i)
(while (<> (substr #config #i 1) "\n")
(set #i (+ #i 1))
)
(if (> (- #i #k) 0)
(
(set #val (substr #config #k (- #i #k)))
(if (= "FINDINSTALL" #var)
(set #findinstall (+ #val))
)
(if (= "FINDDIR" #var)
(set #finddir #val)
)
(if (= "AMINETINSTALL" #var)
(set #aminetinstall (+ #val))
)
(if (= "AMINETDIR" #var)
(set #aminetdir #val)
)
(if (= "FINDDOPUS" #var)
(set #find-dopus (+ #val))
)
)
)
(set #i (+ #i 1))
)
)
)
)
;*******************
; INTERACTIVE START
;*******************
(welcome)
(if (> #configsize 0)
(
(P_ReadFindTooltypes)
(set #interactive 1)
(set #interactive
(askchoice
(prompt (P_GetViewSettingsString))
(help @askchoice-help)
(choices (cat (if (< @installer-version 2752518) "" "\x1b[2p") #str-modenew) #str-modeupdate)
(default #interactive)
)
)
)
; else
(set #interactive 0)
)
(if (= #interactive 0)
(
(set #findinstall
(askchoice
(prompt #str-askfind)
(help #help-find @askchoice-help)
(choices (cat (if (< @installer-version 2752518) "" "\x1b[2p") #str-findno) #str-findprog #str-findall)
(default #findinstall)
)
)
(if #findinstall
(
(set #finddir
(askdir
(prompt #str-finddest)
(help @askdir-help)
(default #finddir)
)
)
(P_ReadFindTooltypes)
(if (= #findinstall 2)
(set #indexdir
(askdir
(prompt #str-indexdir)
(help @askdir-help)
(default #indexdir)
(newpath)
)
)
)
(set #find-notoncd
(askchoice
(prompt #str-notoncd)
(help #help-notoncd @askchoice-help)
(choices (cat (if (< @installer-version 2752518) "" "\x1b[2p") #str-no) #str-yes)
(default #find-notoncd)
)
)
(set #find-dopus
(askchoice
(prompt #str-dopus)
(help @askchoice-help)
(choices (cat (if (< @installer-version 2752518) "" "\x1b[2p") #str-no) #str-yes)
(default #find-dopus)
)
)
(if #find-dopus
(set #matchscript (tackon
(askdir
(prompt #str-dopusdest)
(help @askdir-help)
(default #matchscript)
)
"AFCDFind-HandleMatch.dopus5")
)
)
)
)
(set #aminetinstall
(askchoice
(prompt #str-askaminet)
(help @askchoice-help)
(choices (cat (if (< @installer-version 2752518) "" "\x1b[2p") #str-no) #str-yes)
(default #aminetinstall)
)
)
(if #aminetinstall
(set #aminetdir
(askdir
(prompt #str-aminetdest)
(help @askdir-help)
(default #aminetdir)
)
)
)
)
; else
(
(P_ReadFindTooltypes)
)
)
;*******************
; COPY FILES ACROSS
;*******************
(onerror (P_SaveChoices))
(complete 0)
(working #str-updateinstaller)
(if (= 0 (run "C:Which Installer NORES >ENV:AFCDInst_tmp" (safe)))
(
(set #installerloc (getenv "AFCDInst_tmp"))
(set #installerloc (substr #installerloc 0 (- (strlen #installerloc) 1)))
)
;else
(set #installerloc "C:")
)
(delete "ENV:AFCDInst_tmp" (safe))
(copylib
(prompt (#str-updating #installerloc))
(help #help-updateinstaller)
(source (cat #cddevice ":C/Installer"))
(dest (pathonly #installerloc))
(confirm)
)
(complete 8)
(working #str-updateview)
(copylib
(prompt (#str-updating "C:AFCDView"))
(help #help-updateview)
(source (cat #cddevice ":C/AFCDView"))
(dest "C:")
(confirm)
)
(complete 10)
(if #findinstall
(
(copylib
(source (cat #cddevice ":+System+/Find"))
(dest #finddir)
(newname "AFCDFind")
)
(if (NOT (exists (tackon #finddir "AFCDFind.info")))
(
(copyfiles
(source (cat #cddevice ":+System+/Find.info"))
(dest #finddir)
(newname "AFCDFind.info")
)
(tooltype
(prompt #str-settooltypes)
(dest (tackon #finddir "AFCDFind"))
(noposition)
)
)
)
; clear tooltypes first (bug in installer)
(tooltype
(prompt #str-settooltypes)
(dest (tackon #finddir "AFCDFind"))
(settooltype "NOTONCD")
(settooltype "(NOTONCD)")
(settooltype "FASTSTARTUP")
(settooltype "(FASTSTARTUP)")
(settooltype "HELPFILE")
(settooltype "(HELPFILE")
(settooltype "MATCHSCRIPT")
(settooltype "(MATCHSCRIPT")
(settooltype "INDEXDIR")
(settooltype "(INDEXDIR")
)
; now set tooltypes
(tooltype
(prompt #str-settooltypes)
(dest (tackon #finddir "AFCDFind"))
(if (= 1 #find-notoncd) (settooltype "NOTONCD" "") (settooltype "(NOTONCD)" ""))
(settooltype (if (= 2 #findinstall) "(FASTSTARTUP)" "FASTSTARTUP") "")
(settooltype "HELPFILE" (tackon #finddir "AFCDFind.guide"))
(settooltype "MATCHSCRIPT" #matchscript)
(settooltype "INDEXDIR" (if (= #findinstall 2) #indexdir (cat #cddevice ":+System+/Indices")))
)
(if (exists (cat #cddevice ":+System+/Info/AFCDFind.guide"))
(copyfiles
(source (cat #cddevice ":+System+/Info/AFCDFind.guide"))
(dest #finddir)
(infos)
)
)
(if #find-dopus
(copyfiles
(source (cat #cddevice ":+System+/AFCDFind-HandleMatch.dopus5"))
(dest #finddir)
(infos)
)
)
)
)
(complete 30)
(if (= #findinstall 2)
(
(if (NOT (exists #indexdir))
(makedir #indexdir (infos))
)
(foreach (cat #cddevice ":+System+/Indices") "(AFCD?|AFCD??)"
(if (< @each-type 0)
(
(set #docopyidx 1)
(set #idxname (cat #cddevice ":+System+/Indices/" @each-name))
(if (exists (tackon #indexdir @each-name))
(if (NOT (earlier (tackon #indexdir @each-name) #idxname))
(set #docopyidx 0)
)
)
(if #docopyidx
(copyfiles
(source #idxname)
(dest #indexdir)
(infos)
)
)
)
)
)
)
)
(complete 90)
(if #aminetinstall
(copyfiles
(prompt #str-copyaminetindex)
(help @copyfiles-help)
(source (cat #cddevice ":-In_the_Mag-/Reader_Requests/Aminet_Index"))
(dest #aminetdir)
(infos)
(noposition)
(optional nofail askuser)
(confirm)
)
)
;**************
; SAVE CHOICES
;**************
(complete 99)
(P_SaveChoices)
;*********
; THE END
;*********
(complete 100)
(exit #str-complete (quiet))